#ifndef SQUARES_H_
#define SQUARES_H_
#include <GL/glut.h>
#include <stdlib.h>
#include <string.h>
#include <math.h> 
#include <stdio.h>
#include "vector.h"

#define NUMBER_OF_ACTIVE_SQUARE 4
#define NUMBER_OF_DOORS 4
#define PORTA_1 	0
#define PORTA_2 	1
#define PORTA_3		2
#define PORTA_4		3

#define HORIZ 	0
#define VERT 	1
#define CHIUSO 	0
#define APERTO 	1
#define NON_ATTIVARE 	0
#define ATTIVARE 	1

typedef struct active_square{
	GLfloat x1; 		// coordinate che definiscono il perimetro attivo della square
	GLfloat y1;
	GLfloat x2;
	GLfloat y2;
	GLint elem;			// intero che determina l'elemento da attivare (porta)
	GLint status; 		// 0 = non azionato / 1 = azionato
	GLint activation; 	// 0 = non e' richiesta alcuna azione / 1 = richiesta di azionamento
} active_square_t;

struct door_t{
	GLfloat start[2];
	GLfloat end[2];
	GLfloat h;
	GLint status;
	GLint orientation;
};

extern struct door_t doors[NUMBER_OF_DOORS];
	GLfloat slidexx;
	GLfloat slidexxstep;

int isInActiveSquare(active_square_t* asMap,float eye_x, float eye_y);
int acrossDoor(int i,float Start[2],float End[2]);
void defineActiveSquare(active_square_t* astmp,
	GLfloat x1, // coordinate che definiscono il perimetro attivo della square
	GLfloat y1,
	GLfloat x2,
	GLfloat y2,
	GLint elem,
	GLint status, // 0 = non azionato / 1 = azionato
	GLint activation // 0 = non e' richiesta alcuna azione / 1 = richiesta di azionamento
		);
//void initASMap (struct active_square *asMap);
void drawActiveElements(active_square_t* astmp);
void drawActiveSquares(active_square_t* astmp);

void drawElement(active_square_t* astmp,int elem);

#endif /*SQUARES_H_*/

